package com.zwr.sheller.shop.mapper;

import java.util.List;
import java.util.Map;

/**
 * @author 付龙江
 * @date 2022/1/7 9:44
 */
public interface SalesDataMapper {
    /**
     * 销售统计1
     * @param from 起始时间
     * @param to 截止时间
     * @param storeId 店铺id
     * @return 返回对应的集合
     */
    List<Map<String,Object>> selectSalesData(String from, String to, Long storeId);

    /**
     * 销售统计2  成功了的订单
     * @param from 起始时间
     * @param to 截止时间
     * @param storeId 店铺id
     * @return 返回对应的集合
     */
    List<Map<String,Object>> selectSuccessSales(String from, String to, Long storeId);

    /**
     * @return 查询今天的订单量
     */
    Long selectTodayOrder(Long storeId);

    /**
     * @return 查询昨天的订单量
     */
    Long selectYesterdayOrder(Long storeId);

    /**
     * @return 7日成交订单数
     */
    Long selectSevenDaysOrder(Long storeId);

    /**
     * @return 最近一个月
     */
    Long selectLastMonth(Long storeId);

    /**
     * @return 近7天的走势图
     */
    List<Map<String,Object>> selectSevenDayImg(Long storeId);
    /**
     * @return 近15天的走势图
     */
    List<Map<String,Object>> selectHalfOfMonthImg(Long storeId);

    /**
     * 订单统计中搜索订单部分
     * @param from 开始时间
     * @param to 结束时间
     * @return 返回对应的订单信息
     */
    List<Map<String,Object>> selectSpecificOrder(String from, String to, Long storeId);

    /**
     * 销售明细
     * @param from 开始时间
     * @param to 结束时间
     * @param storeId 商家编号
     * @param notPayStatus 待付款
     * @param deliverGoodsStatus 待发货
     * @param getGoodsStatus 待收货
     * @param backGoodsStatus 退货
     * @param cancelStatus 已取消
     * @param successStatus 已完成
     * @param usToOrderStatus 自提订单
     * @return 返回符合以上要求的数据
     */
    List<Map<String,Object>>selectSalesDetail(String from, String to,Long storeId,
                                              Integer notPayStatus, Integer deliverGoodsStatus,
                                              Integer getGoodsStatus, Integer backGoodsStatus,
                                              Integer cancelStatus, Integer successStatus,
                                              Integer usToOrderStatus);

    /**
     * 销售排行
     * @param from 开始时间
     * @param to 截止时间
     * @param storeId 商铺编号
     * @param status 状态
     * @return 返回要求数据
     */
    List<Map<String,Object>> selectSalesRanking(String from, String to,Long storeId ,Integer status);

    /**
     * 首页：订单信息
     * @param storeId 商铺id
     * @return 返回待付款信息
     */
    Long selectNotPay(Long storeId);

    /**
     * 首页：订单信息
     * @param storeId 商铺id
     * @return 返回待发货
     */
    Long selectNotSendGoods(Long storeId);

    /**
     * 首页：订单信息
     * @param storeId 商铺id
     * @return 返回待收货
     */
    Long selectNotGetGoods(Long storeId);

    /**
     * 首页：订单信息
     * @param storeId 商铺id
     * @return 维权订单（退回订单）
     */
    Long selectBackGoods(Long storeId);

    /**
     * 首页：订单信息
     * @param storeId 商铺id
     * @return 返回自提订单
     */
    Long selectUsToOrder(Long storeId);

    /**
     * 首页：商品信息
     * @param storeId 商铺编号
     * @return 返回出售中的商品
     */
    Long selectSalesGoods(Long storeId);

    /**
     * 首页：商品信息
     * @param storeId 商铺编号
     * @return 返回今日上架商品
     */
    Long selectTodayUpGoods(Long storeId);

    /**
     * 首页：商品信息
     * @param storeId 商铺编号
     * @return 返回下架商品数
     */
    Long selectDownGoods(Long storeId);

    /**
     * 首页：商品信息
     * @param storeId 商铺编号
     * @return 返回库存预警数
     */
    Long selectStockWarning(Long storeId);

    /**
     * 首页：商品信息
     * @param storeId 商铺编号
     * @return 返回仓库商品
     */
    Long selectStockGoods(Long storeId);

    /**
     * 首页：商铺信息
     * @param storeId 商铺编号
     * @return 返回对应的map信息
     */
    Map<String,Object>  selectStoreMessage(Long storeId);

    /**
     * 根据商铺编号查询所有商品id
     * @param storeId 商铺编号
     * @return 返回商品编号
     */
    List<Long> selectGoodsIds(Long storeId);

}
